home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / mach-o / dyld_debug.h < prev    next >
Text File  |  1994-08-11  |  3KB  |  107 lines

  1. #ifndef _DYLD_DEBUG_
  2. #define _DYLD_DEBUG_
  3.  
  4. #import <mach/mach.h>
  5. /*
  6.  * The dyld debugging API.
  7.  */
  8. enum dyld_debug_return {
  9.     DYLD_SUCCESS,
  10.     DYLD_INCONSISTENT_DATA,
  11.     DYLD_INVALID_ARGUMENTS,
  12.     DYLD_FAILURE
  13. };
  14.  
  15. struct dyld_debug_module {
  16.     struct mach_header *header;
  17.     unsigned long vmaddr_slide;
  18.     unsigned long module_index;
  19. };
  20.  
  21. enum dyld_event_type {
  22.     DYLD_IMAGE_ADDED,
  23.     DYLD_MODULE_BOUND,
  24.     DYLD_MODULE_REMOVED,
  25.     DYLD_MODULE_REPLACED,
  26.     DYLD_PAST_EVENTS_END
  27. };
  28.  
  29. struct dyld_event {
  30.     enum dyld_event_type type;
  31.     struct dyld_debug_module arg[2];
  32. };
  33.  
  34. extern enum dyld_debug_return _dyld_debug_defining_module(
  35.     task_t target_task,
  36.     unsigned long send_timeout,
  37.     unsigned long rcv_timeout,
  38.     boolean_t inconsistent_data_ok,
  39.     char *name,
  40.     struct dyld_debug_module *module);
  41.  
  42. extern enum dyld_debug_return _dyld_debug_is_module_bound(
  43.     task_t target_task,
  44.     unsigned long send_timeout,
  45.     unsigned long rcv_timeout,
  46.     boolean_t inconsistent_data_ok,
  47.     struct dyld_debug_module module,
  48.     boolean_t *bound);
  49.  
  50. extern enum dyld_debug_return _dyld_debug_bind_module(
  51.     task_t target_task,
  52.     unsigned long send_timeout,
  53.     unsigned long rcv_timeout,
  54.     boolean_t inconsistent_data_ok,
  55.     struct dyld_debug_module module);
  56.  
  57. extern enum dyld_debug_return _dyld_debug_subscribe_to_events(
  58.     task_t target_task,
  59.     unsigned long send_timeout,
  60.     unsigned long rcv_timeout,
  61.     boolean_t inconsistent_data_ok,
  62.     void (*dyld_event_routine)(struct dyld_event event));
  63.  
  64. /*
  65.  * _dyld_debug_add_event_subscriber() uses the mig interface functions below
  66.  * to dispatch the dyld event messages from the subscriber port specified.
  67.  */
  68. extern enum dyld_debug_return _dyld_debug_add_event_subscriber(
  69.     task_t target_task,
  70.     unsigned long send_timeout,
  71.     unsigned long rcv_timeout,
  72.     boolean_t inconsistent_data_ok,
  73.     port_t subscriber);
  74. /*
  75.  * These structures should be produced by mig(1) from the mig generated files
  76.  * but they are not.  These are really only needed so the correct size of the
  77.  * request and reply messages can be allocated.
  78.  */
  79. struct _dyld_event_message_request {
  80.     msg_header_t head;
  81.     msg_type_t eventType;
  82.     struct dyld_event event;
  83. };
  84. struct _dyld_event_message_reply {
  85.     msg_header_t head;
  86.     msg_type_t RetCodeType;
  87.     kern_return_t RetCode;
  88. };
  89. #ifndef    mig_internal
  90. /*
  91.  * _dyld_event_server() is the mig generated routine to dispatch dyld event
  92.  * messages.
  93.  */
  94. extern boolean_t _dyld_event_server(
  95.     struct _dyld_event_message_request *request,
  96.     struct _dyld_event_message_reply *reply);
  97. #endif
  98. /*
  99.  * _dyld_event_server_callback() is the routine called by _dyld_event_server()
  100.  * that must be written by users of _dyld_event_server().
  101.  */
  102. extern void _dyld_event_server_callback(
  103.     port_t subscriber,
  104.     struct dyld_event event);
  105.  
  106. #endif /* _DYLD_DEBUG_ */
  107.